package com.alipay.mapper;

import com.alipay.model.entity.TransTaskEntity;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author Jun
 */
@Repository
public interface TransferTaskMapper {
    /**
     * 插入转账任务表
     *
     * @param transferTaskDO
     * @return
     */
    boolean insert(TransTaskEntity transferTaskDO);
    /**
     * 更新转账任务状态，乐观锁控制
     *
     * @param payerAccount
     * @param transId
     * @param oldStatus
     * @param newStatus
     * @return
     */
    boolean update(@Param("payerAccount") String payerAccount,
                   @Param("transId") String transId,
                   @Param("oldStatus") int oldStatus,
                   @Param("newStatus") int newStatus);

    /**
     * 根据交易事务编号获取任务信息
     * @param transId
     * @return
     */
    TransTaskEntity getTransferTaskByTransId(String transId);

    /**
     * 获取没有完成的转账任务(非最终态)
     * @param transferTaskDO
     * @param limit
     * @return
     */
    List<TransTaskEntity> getUnfinishedTransactionTask(TransTaskEntity transferTaskDO, Integer limit);

    /**
     * 获取没有完成的转账任务(非最终态)
     * @param transferTaskDO
     * @param lastId
     * @param limit
     * @return
     */
    List<TransTaskEntity> getUnfinishedTransactionTaskByLastId(TransTaskEntity transferTaskDO, Long lastId, Integer limit);
}
